Display the root a bit more cleanly.
authorJonathan Blandford <jrb@gnome.org>
Mon, 23 Feb 2004 20:24:01 +0000 (20:24 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Mon, 23 Feb 2004 20:24:01 +0000 (20:24 +0000)
Mon Feb 23 15:23:23 2004  Jonathan Blandford  <jrb@gnome.org>

        * gtk/gtkpathbar.c (gtk_path_bar_set_path): Display the root a bit
        more cleanly.

        * gtk/gtkpathbar.h (struct _GtkPathBarClass): fix the signal.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkfilechooserdefault.c
gtk/gtkfilesystem.c
gtk/gtkpathbar.c
gtk/gtkpathbar.h

index ff2f10bc062c7a513b07d4852d626ca12a41835e..8769b845a42e8018e47cfd58312555e428ce4363 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Mon Feb 23 15:23:23 2004  Jonathan Blandford  <jrb@gnome.org>
+
+       * gtk/gtkpathbar.c (gtk_path_bar_set_path): Display the root a bit
+       more cleanly.
+
+       * gtk/gtkpathbar.h (struct _GtkPathBarClass): fix the signal.
+
 2004-02-23  Federico Mena Quintero  <federico@ximian.com>
 
        Rework the user interface of the file chooser, as per 
index ff2f10bc062c7a513b07d4852d626ca12a41835e..8769b845a42e8018e47cfd58312555e428ce4363 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb 23 15:23:23 2004  Jonathan Blandford  <jrb@gnome.org>
+
+       * gtk/gtkpathbar.c (gtk_path_bar_set_path): Display the root a bit
+       more cleanly.
+
+       * gtk/gtkpathbar.h (struct _GtkPathBarClass): fix the signal.
+
 2004-02-23  Federico Mena Quintero  <federico@ximian.com>
 
        Rework the user interface of the file chooser, as per 
index ff2f10bc062c7a513b07d4852d626ca12a41835e..8769b845a42e8018e47cfd58312555e428ce4363 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb 23 15:23:23 2004  Jonathan Blandford  <jrb@gnome.org>
+
+       * gtk/gtkpathbar.c (gtk_path_bar_set_path): Display the root a bit
+       more cleanly.
+
+       * gtk/gtkpathbar.h (struct _GtkPathBarClass): fix the signal.
+
 2004-02-23  Federico Mena Quintero  <federico@ximian.com>
 
        Rework the user interface of the file chooser, as per 
index ff2f10bc062c7a513b07d4852d626ca12a41835e..8769b845a42e8018e47cfd58312555e428ce4363 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb 23 15:23:23 2004  Jonathan Blandford  <jrb@gnome.org>
+
+       * gtk/gtkpathbar.c (gtk_path_bar_set_path): Display the root a bit
+       more cleanly.
+
+       * gtk/gtkpathbar.h (struct _GtkPathBarClass): fix the signal.
+
 2004-02-23  Federico Mena Quintero  <federico@ximian.com>
 
        Rework the user interface of the file chooser, as per 
index ff2f10bc062c7a513b07d4852d626ca12a41835e..8769b845a42e8018e47cfd58312555e428ce4363 100644 (file)
@@ -1,3 +1,10 @@
+Mon Feb 23 15:23:23 2004  Jonathan Blandford  <jrb@gnome.org>
+
+       * gtk/gtkpathbar.c (gtk_path_bar_set_path): Display the root a bit
+       more cleanly.
+
+       * gtk/gtkpathbar.h (struct _GtkPathBarClass): fix the signal.
+
 2004-02-23  Federico Mena Quintero  <federico@ximian.com>
 
        Rework the user interface of the file chooser, as per 
index 33c00b91950c204be0d9c7f7a07e898c03ccab11..c49dba188903c35ac72538928f20f97cd1d85627 100644 (file)
@@ -18,8 +18,6 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#define USE_PATH_BAR
-
 #include "gdk/gdkkeysyms.h"
 #include "gtkalignment.h"
 #include "gtkbindings.h"
@@ -268,7 +266,7 @@ static void     shortcuts_row_activated_cb (GtkTreeView           *tree_view,
 static gboolean shortcuts_select_func   (GtkTreeSelection      *selection,
                                         GtkTreeModel          *model,
                                         GtkTreePath           *path,
-                                        gboolean               path_currentlny_selected,
+                                        gboolean               path_currently_selected,
                                         gpointer               data);
 
 static void list_selection_changed     (GtkTreeSelection      *tree_selection,
@@ -279,7 +277,7 @@ static void list_row_activated         (GtkTreeView           *tree_view,
                                        GtkFileChooserDefault *impl);
 
 static void path_bar_clicked           (GtkPathBar            *path_bar,
-                                       const char            *file_path,
+                                       GtkFilePath           *file_path,
                                        GtkFileChooserDefault *impl);
 
 static void add_bookmark_button_clicked_cb    (GtkButton             *button,
@@ -3101,14 +3099,10 @@ list_row_activated (GtkTreeView           *tree_view,
 
 static void
 path_bar_clicked (GtkPathBar            *path_bar,
-                 const char            *file_path,
+                 GtkFilePath           *file_path,
                  GtkFileChooserDefault *impl)
 {
-  GtkFilePath *new_folder = NULL;
-
-  new_folder = gtk_file_path_new_dup (file_path);
-  _gtk_file_chooser_set_current_folder_path (GTK_FILE_CHOOSER (impl), new_folder);
-  gtk_file_path_free (new_folder);
+  _gtk_file_chooser_set_current_folder_path (GTK_FILE_CHOOSER (impl), file_path);
 }
 
 static const GtkFileInfo *
index 9f2f653f3ccf0274ebf00e68b2daffe9b288ec8c..248017c728187035e5efb5a403176dd75b281411 100644 (file)
@@ -1017,7 +1017,6 @@ _gtk_file_system_module_create (GtkFileSystemModule *fs_module)
 GtkFileSystem *
 _gtk_file_system_create (const char *file_system_name)
 {
-  struct FileSystemInfo *file_system_info;
   GSList *l;
   char *module_path;
   GtkFileSystemModule *fs_module;
@@ -1054,3 +1053,5 @@ _gtk_file_system_create (const char *file_system_name)
   
   return fs;
 }
+
+
index 8f42cafe1da9aeb19d5c3bedd314973be30bcf8d..df1ef8dff2d5904fd0b32b31cff72f423149bda5 100644 (file)
@@ -17,6 +17,7 @@
  * Boston, MA 02111-1307, USA.
  */
 
+#include <string.h>
 #include "gtkpathbar.h"
 #include "gtktogglebutton.h"
 #include "gtkarrow.h"
@@ -113,9 +114,9 @@ gtk_path_bar_class_init (GtkPathBarClass *path_bar_class)
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkPathBarClass, path_clicked),
                  NULL, NULL,
-                 _gtk_marshal_VOID__STRING,
+                 _gtk_marshal_VOID__POINTER,
                  G_TYPE_NONE, 1,
-                 G_TYPE_STRING);
+                 G_TYPE_POINTER);
 }
 
 
@@ -562,11 +563,14 @@ button_clicked_cb (GtkWidget *button,
                   gpointer   data)
 {
   GtkWidget *path_bar;
+  GtkFilePath *file_path;
 
   path_bar = button->parent;
   g_assert (path_bar);
 
-  g_signal_emit (path_bar, path_bar_signals [PATH_CLICKED], 0, (const char *) data);
+  file_path = gtk_file_path_new_dup ((char *)data);
+  g_signal_emit (path_bar, path_bar_signals [PATH_CLICKED], 0, file_path);
+  gtk_file_path_free (file_path);
 }
 
 static GtkWidget *
@@ -588,8 +592,12 @@ make_directory_button (const char  *dir_name,
     {
       gchar *str;
 
+      /* FIXME: gtk_file_path_free is not be a function!! I have to
+       * copy it to a string in order to manage this correctly */
       str = g_strdup (gtk_file_path_get_string (path));
-      g_signal_connect (button, "clicked", G_CALLBACK (button_clicked_cb), str);
+      g_signal_connect (button, "clicked",
+                       G_CALLBACK (button_clicked_cb),
+                       str);
       g_object_weak_ref (G_OBJECT (button), (GWeakNotify) g_free, str);
     }
 
@@ -623,9 +631,12 @@ gtk_path_bar_set_path (GtkPathBar         *path_bar,
                       GtkFileSystem      *file_system,
                       GError            **error)
 {
-  gboolean valid = TRUE;
   GtkFilePath *path;
   gboolean first_directory = TRUE;
+  
+  g_return_if_fail (GTK_IS_PATH_BAR (path_bar));
+  g_return_if_fail (file_path != NULL);
+  g_return_if_fail (file_system != NULL);
 
   gtk_path_bar_clear_buttons (path_bar);
   path = gtk_file_path_copy (file_path);
@@ -636,6 +647,9 @@ gtk_path_bar_set_path (GtkPathBar         *path_bar,
       GtkWidget *button;
       const gchar *display_name;
       GError *err = NULL;
+      GtkFileFolder *file_folder;
+      GtkFileInfo *file_info;
+      gboolean valid;
 
       valid = gtk_file_system_get_parent (file_system,
                                          path,
@@ -650,29 +664,23 @@ gtk_path_bar_set_path (GtkPathBar         *path_bar,
        }
 
       if (parent_path)
-       {
-         GtkFileFolder *file_folder;
-         GtkFileInfo *file_info;
-
-         file_folder = gtk_file_system_get_folder (file_system, parent_path,
-                                                   GTK_FILE_INFO_DISPLAY_NAME, NULL);
-         file_info = gtk_file_folder_get_info (file_folder, path, NULL);
-         display_name = gtk_file_info_get_display_name (file_info);
-         button = make_directory_button (display_name, path, first_directory);
-         gtk_file_info_free (file_info);
-         /* FIXME: ask owen about mem management. gtk_file_folder_free (file_folder); */
-       }
+       file_folder = gtk_file_system_get_folder (file_system, parent_path,
+                                                 GTK_FILE_INFO_DISPLAY_NAME, NULL);
       else
-       {
-         /* We've reached the root node */
-         /* FIXME: gtk_file_system_get_root_display_name() or something */
-         button = make_directory_button (gtk_file_path_get_string (path),
-                                         path, first_directory);
-       }
+       file_folder = gtk_file_system_get_folder (file_system, path,
+                                                 GTK_FILE_INFO_DISPLAY_NAME, NULL);
+
+      file_info = gtk_file_folder_get_info (file_folder, path, NULL);
+      display_name = gtk_file_info_get_display_name (file_info);
+      if (! strcmp ("/", display_name))
+       display_name = " / ";
+      button = make_directory_button (display_name, path, first_directory);
+      gtk_file_info_free (file_info);
+      gtk_file_path_free (path);
+      g_object_unref (file_folder);
 
       gtk_container_add (GTK_CONTAINER (path_bar), button);
       path_bar->button_list = g_list_prepend (path_bar->button_list, button);
-      gtk_file_path_free (path);
 
       path = parent_path;
       first_directory = FALSE;
index 04dd3b7ce09c5484c2cedc154429ff58740abd1f..51d567188ec79ed9323a82591e43b5101da3d0ea 100644 (file)
@@ -55,7 +55,7 @@ struct _GtkPathBarClass
   GtkContainerClass parent_class;
 
   void (* path_clicked) (GtkPathBar  *path_bar,
-                        const gchar *file_path);
+                        GtkFilePath *file_path);
 };
 
 GType gtk_path_bar_get_type (void) G_GNUC_CONST;